From 4a4a8f6d9b98acb9b7eace1a9ab59e6634fac45f Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Sun, 25 Jan 2009 10:32:26 +0000 Subject: [PATCH] Rename memory_is_conventional_ram() to page_is_conventional_ram(). It now checks that a whole contiguous page is conventional RAM. Signed-off-by: Keir Fraser --- xen/arch/ia64/xen/mm.c | 4 ++-- xen/arch/x86/mm.c | 7 ++++--- xen/drivers/passthrough/vtd/iommu.c | 4 ++-- xen/drivers/video/vga.c | 2 +- xen/include/xen/mm.h | 4 ++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/xen/arch/ia64/xen/mm.c b/xen/arch/ia64/xen/mm.c index 3583b3c27b..d4052b3bbb 100644 --- a/xen/arch/ia64/xen/mm.c +++ b/xen/arch/ia64/xen/mm.c @@ -3246,9 +3246,9 @@ int get_page_type(struct page_info *page, u32 type) return 1; } -int memory_is_conventional_ram(paddr_t p) +int page_is_conventional_ram(unsigned long mfn) { - return (efi_mem_type(p) == EFI_CONVENTIONAL_MEMORY); + return (efi_mem_type(pfn_to_paddr(mfn)) == EFI_CONVENTIONAL_MEMORY); } diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index b4d8a8792a..5785a3ecbc 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -290,15 +290,16 @@ void __init arch_init_memory(void) subarch_init_memory(); } -int memory_is_conventional_ram(paddr_t p) +int page_is_conventional_ram(unsigned long mfn) { + uint64_t maddr = pfn_to_paddr(mfn); int i; for ( i = 0; i < e820.nr_map; i++ ) { if ( (e820.map[i].type == E820_RAM) && - (e820.map[i].addr <= p) && - ((e820.map[i].addr + e820.map[i].size) > p) ) + (e820.map[i].addr <= maddr) && + ((e820.map[i].addr + e820.map[i].size) >= (maddr + PAGE_SIZE)) ) return 1; } diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c index 905ac51b81..9e76597d86 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -998,8 +998,8 @@ static int intel_iommu_domain_init(struct domain *d) /* Set up 1:1 page table for dom0 for all RAM except Xen bits. */ for ( i = 0; i < max_page; i++ ) { - if ( xen_in_range(i << PAGE_SHIFT, (i + 1) << PAGE_SHIFT) || - !memory_is_conventional_ram(i << PAGE_SHIFT) ) + if ( !page_is_conventional_ram(i) || + xen_in_range(i << PAGE_SHIFT, (i + 1) << PAGE_SHIFT) ) continue; tmp = 1 << (PAGE_SHIFT - PAGE_SHIFT_4K); diff --git a/xen/drivers/video/vga.c b/xen/drivers/video/vga.c index f64dc06eca..22db37430e 100644 --- a/xen/drivers/video/vga.c +++ b/xen/drivers/video/vga.c @@ -79,7 +79,7 @@ void __init vga_init(void) switch ( vga_console_info.video_type ) { case XEN_VGATYPE_TEXT_MODE_3: - if ( memory_is_conventional_ram(0xB8000) || + if ( page_is_conventional_ram(paddr_to_pfn(0xB8000)) || ((video = ioremap(0xB8000, 0x8000)) == NULL) ) return; outw(0x200a, 0x3d4); /* disable cursor */ diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h index 0b78e8647e..a982609f55 100644 --- a/xen/include/xen/mm.h +++ b/xen/include/xen/mm.h @@ -103,8 +103,8 @@ unsigned long avail_scrub_pages(void); int guest_remove_page(struct domain *d, unsigned long gmfn); -/* Returns TRUE if the memory at address @p is ordinary RAM. */ -int memory_is_conventional_ram(paddr_t p); +/* Returns TRUE if the whole page at @mfn is ordinary RAM. */ +int page_is_conventional_ram(unsigned long mfn); extern unsigned long *alloc_bitmap; /* for vmcoreinfo */ -- 2.30.2